const ExcelJS = require("exceljs");
const dayjs = require("dayjs");

// 原始数据对象
const list = [
  {
    day: "",
    name: "动漫",
    have: 4099,
    rest: 2581,
    estimation: 0,
    reality: 0,
    current_difference: 0,
    high: 5.27,
    low: -4.98,
    nx: "",
    result: "",
    total_difference: 0,
  },
  {
    day: "",
    name: "机器",
    have: 23683,
    rest: 12337,
    estimation: 0,
    reality: 0,
    current_difference: 0,
    high: 6.83,
    low: -3.46,
    nx: "",
    result: "",
    total_difference: 0,
  },
  {
    day: "",
    name: "人工",
    have: 24199,
    rest: 15801,
    estimation: 0,
    reality: 0,
    current_difference: 0,
    high: 6.51,
    low: -4.35,
    nx: "",
    result: "",
    total_difference: 1.08,
  },
  {
    day: "",
    name: "华安",
    have: 10.5543,
    rest: 42931,
    estimation: 0,
    reality: 0,
    current_difference: 0,
    high: 6.86,
    low: -2.69,
    nx: "",
    result: "",
    total_difference: 0,
  },
];

// 获取时间函数
const getTime = () => dayjs().format("YYYY-MM-DD");

// 处理Excel的主函数
async function handleXlsx(xlsxData = {}) {
  try {
    const sheetName = xlsxData.name;
    // const day = getTime();
    xlsxData.day = getTime();

    // 转换数据为有序数组（按Excel列顺序）
    const params = [
      xlsxData.day,
      xlsxData.name,
      xlsxData.have,
      xlsxData.rest,
      xlsxData.estimation,
      xlsxData.reality,
      xlsxData.current_difference,
      xlsxData.high,
      xlsxData.low,
      xlsxData.nx,
      xlsxData.result,
      xlsxData.total_difference,
    ];

    // 1. 初始化工作簿
    const workbook = new ExcelJS.Workbook();

    // 2. 读取现有文件（保留所有样式）
    await workbook.xlsx.readFile("./data.xlsx");

    // 3. 获取指定工作表
    const worksheet = workbook.getWorksheet(sheetName);
    if (!worksheet) throw new Error(`工作表 ${sheetName} 不存在`);

    // 4. 插入新行（在第二行插入，保留表头样式）
    const targetRow = 2; // 插入到第二行（原第一行下方）
    worksheet.insertRow(targetRow, params);

    // 5. 继承表头样式（假设表头在第一行）
    const headerRow = worksheet.getRow(1);
    const rowToStyle = worksheet.getRow(targetRow);

    // 修改样式复制部分代码如下：

    // headerRow.eachCell((cell, colNumber) => {
    //   const targetCell = rowToStyle.getCell(colNumber);

    //   // 深拷贝样式（处理空值）
    //   const copyStyle = (source) => {
    //     return source ? JSON.parse(JSON.stringify(source)) : undefined;
    //   };

    //   // 仅当源样式存在时复制
    //   if (cell.fill) targetCell.fill = copyStyle(cell.fill);
    //   if (cell.font) targetCell.font = copyStyle(cell.font);
    //   if (cell.border) targetCell.border = copyStyle(cell.border);
    //   if (cell.alignment) targetCell.alignment = copyStyle(cell.alignment);

    //   // 复制数字格式（如日期格式）
    //   if (cell.numFmt) targetCell.numFmt = cell.numFmt;
    // });

    // 6. 保存文件（保留原有样式）
    await workbook.xlsx.writeFile("./data.xlsx");
    console.log("文件更新成功，样式已保留");
  } catch (err) {
    console.error("处理Excel时发生错误:", err.message);
  }
}

// 执行函数
handleXlsx(list[0]);

